package com.augurit.gzcgwsp.wfex.app.notice.handler.hwc.qu;
import java.util.List;

import org.hibernate.SQLQuery;
import org.jbpm.api.model.OpenExecution;
import org.jbpm.pvm.internal.env.EnvironmentImpl;
import com.augurit.common.dao.AcRoleDao;
import com.augurit.common.dao.AcUserRoleDao;
import com.augurit.common.dao.OmUserDao;
import com.augurit.common.entity.OmUser;

/**
 * 系统自动分案类--区级
 * @author Administrator
 *
 */
public class ParentAssignTaskExQ {	
	/**
	 * 获取所属地区数字编码
	 * @param execution
	 * @return
	 */
	public String getAreaCode(OpenExecution execution){
		//dao与service的注入方式
		OmUserDao userDao = (OmUserDao)EnvironmentImpl.getCurrent().get(OmUserDao.class);
		
		String key = "$SYSVAR_STARTER";
		//获取用户登陆名
		String loginName = execution.getVariable(key).toString();
		//获取流程启动者
		OmUser userEntity = userDao.get(loginName);
		//备注，在这里配置了区的读取规则，比如【天河区】配【4】，个区的代表数字，在表BASE_DISTRICT中配置好了
		String remark = userEntity.getRemark();
		System.out.println("流程启动者名字 = "+loginName);		
		//区数字编码
		String areaCode = remark.split(",")[0];
		System.out.println("人员所属地区数字编码 = "+areaCode);
		return areaCode;
	}

	/**
	 * 根据【人员所属地区数字编码】和【角色编码】 获取人员
	 * 只能配一个，因为userIdList只拿一个；如果要配多个，就要拿多个，好像是用逗号隔开
	 * @param roleCode  角色编码
	 * @param areaCode  人员所属地区数字编码
	 * @return
	 */
	public String getUser(String roleCode,String areaCode){
		
		//dao与service的注入方式
		AcUserRoleDao userRoleDao = (AcUserRoleDao)EnvironmentImpl.getCurrent().get(AcUserRoleDao.class);
		AcRoleDao roleDao = (AcRoleDao)EnvironmentImpl.getCurrent().get(AcRoleDao.class);
		//************自己的业务逻辑 开始************
		String hql="select ps.roleId from AcRole ps where ps.roleCode='"+roleCode+"'";
		List<Long> roleIds = roleDao.find(hql);//通过编码获取角色编号
		String sql = "select u.login_name from Ac_User_Role ps,OM_USER u where ps.role_Id='"+roleIds.get(0)+"' and ps.user_id=u.user_id and u.remark='"+areaCode+"'";
		SQLQuery SQLQuery = userRoleDao.getSession().createSQLQuery(sql);

		List userIdList = SQLQuery.list();
		String assignee="";
		if(userIdList.size()>0){
			assignee = (String)userIdList.get(0);
		}
		System.out.println("自动分案发给 = "+assignee);
//		String assignee="";
//		if(userIdList!=null){
//			List<OmUser> users = userDao.findByIds(userIdList);
//			for(OmUser user : users){
//				assignee+=user.getUserCode()+",";
//			}
//		}
//		
//		assignee=assignee.substring(0, assignee.length()-1);
		
		//************自己的业务逻辑 结束************
//		
		return assignee;
	}
}
